{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "条件GAN，生成和鉴别都需要label，生成器可以生产指定数字的图片，但只能判断图片真假"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import glob\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2.0.0'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "(train_images, train_labels), (_, _) = tf.keras.datasets.mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('uint8')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28, 1)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype('float32')\n",
    "train_images = (train_images - 127.5)/127.5\n",
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "BATCH_SIZE = 256\n",
    "BUFFER_SIZE = 60000\n",
    "noise_dim = 50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<TensorSliceDataset shapes: ((28, 28, 1), ()), types: (tf.float32, tf.uint8)>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datasets = tf.data.Dataset.from_tensor_slices((train_images, train_labels))\n",
    "#datasets #<TensorSliceDataset shapes: (28, 28), types: tf.float32>\n",
    "datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "datasets = datasets.shuffle(BUFFER_SIZE).batch(BATCH_SIZE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generator_model(): #生成器\n",
    "    \n",
    "    seed = layers.Input(shape=((noise_dim,)))\n",
    "    label = layers.Input(shape=(()))\n",
    "    \n",
    "    x = layers.Embedding(10, noise_dim, input_length=1)(label) #0-9长度为10，输入序列维数为1\n",
    "    x = layers.concatenate([seed, x])\n",
    "    x = layers.Dense(3*3*128, use_bias=False)(x)\n",
    "    x = layers.Reshape((3, 3, 128))(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.ReLU()(x)  \n",
    "    \n",
    "    x = layers.Conv2DTranspose(64, (3, 3), strides=(2, 2), padding='valid', use_bias=False)(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.ReLU()(x)             #7*7*64\n",
    "    \n",
    "    x = layers.Conv2DTranspose(32, (3, 3), strides=(2, 2), padding='same', use_bias=False)(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.ReLU()(x)             #14*14*32\n",
    "    \n",
    "    x = layers.Conv2DTranspose(1, (3, 3), strides=(2, 2), padding='same', use_bias=False)(x)\n",
    "    x = layers.Activation('tanh')(x)                                 #28*28*1\n",
    "    \n",
    "    model = tf.keras.Model(inputs=[seed, label], outputs=x)\n",
    "    \n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "gen=generator_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def discriminator_model():\n",
    "    image = tf.keras.Input(shape=((28,28,1)))\n",
    "    label = tf.keras.Input(shape=(()))\n",
    "    \n",
    "    x = layers.Embedding(10, 28*28, input_length=1)(label)\n",
    "    x = layers.Reshape((28, 28, 1))(x)\n",
    "    x = layers.concatenate([image, x])\n",
    "    \n",
    "    x = layers.Conv2D(32, (3, 3), strides=(2, 2), padding='same', use_bias=False)(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.LeakyReLU()(x)\n",
    "    x = layers.Dropout(0.5)(x)\n",
    "    \n",
    "    x = layers.Conv2D(32*2, (3, 3), strides=(2, 2), padding='same', use_bias=False)(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.LeakyReLU()(x)\n",
    "    x = layers.Dropout(0.5)(x)\n",
    "    \n",
    "    x = layers.Conv2D(32*4, (3, 3), strides=(2, 2), padding='same', use_bias=False)(x)\n",
    "    x = layers.BatchNormalization()(x)\n",
    "    x = layers.LeakyReLU()(x)\n",
    "    x = layers.Dropout(0.5)(x)\n",
    "    \n",
    "    x = layers.Flatten()(x)\n",
    "    x1 = layers.Dense(1)(x)\n",
    "    \n",
    "    model = tf.keras.Model(inputs=[image, label], outputs=x1)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy = tf.keras.losses.BinaryCrossentropy(from_logits=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def discriminator_loss(real_out, fake_out):\n",
    "    real_loss = cross_entropy(tf.ones_like(real_out), real_out)\n",
    "    fake_loss = cross_entropy(tf.zeros_like(fake_out), fake_out)\n",
    "    return real_loss + fake_loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generator_loss(fake_out):\n",
    "    return cross_entropy(tf.ones_like(fake_out), fake_out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "generator_opt = tf.keras.optimizers.Adam(1e-4)\n",
    "discriminator_opt = tf.keras.optimizers.Adam(1e-4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "generator = generator_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "discriminator = discriminator_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train_step(images, labels):\n",
    "    batchsize = labels.shape[0]\n",
    "    noise = tf.random.normal([batchsize, noise_dim]) #当数据最后一个批次不足BATCH_SIZE时，用此方法可解决\n",
    "    \n",
    "    with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:\n",
    "        real_out = discriminator((images, labels), training=True)\n",
    "        \n",
    "        gen_images = generator((noise, labels), training=True)\n",
    "        fake_out = discriminator((gen_images, labels), training=True)\n",
    "        \n",
    "        gen_loss = generator_loss(fake_out)\n",
    "        disc_loss = discriminator_loss(real_out, fake_out)\n",
    "        \n",
    "    gradient_gen = gen_tape.gradient(gen_loss, generator.trainable_variables)\n",
    "    gradient_disc = disc_tape.gradient(disc_loss, discriminator.trainable_variables)\n",
    "    generator_opt.apply_gradients(zip(gradient_gen, generator.trainable_variables))\n",
    "    discriminator_opt.apply_gradients(zip(gradient_disc, discriminator.trainable_variables))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "noise_dim = 50 #输入的噪声向量维数（要与之前生产器模型的输入相对应）\n",
    "\n",
    "num = 10 #每个EPOCH生产16张图片查看\n",
    "\n",
    "noise_seed = tf.random.normal([num, noise_dim])\n",
    "cat_seed = np.random.randint(0, 10, size=(num))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_plot_image(gen_model, test_noise, label, epoch_num):\n",
    "    print('Epoch:', epoch_num+1)\n",
    "    pre_images = gen_model((test_noise, label), training=False)\n",
    "    pre_images = tf.squeeze(pre_images)  #(None, 28, 28, 1)——>(None, 28, 28) plt.imshow((pre_images[i, :, :, 0]+1)/2, cmap='gray')\n",
    "    fig = plt.figure(figsize=(10, 1))\n",
    "    for i in range(pre_images.shape[0]):\n",
    "        plt.subplot(1, 10, i+1)\n",
    "        plt.imshow((pre_images[i, :, : ]+1)/2, cmap='gray')\n",
    "        plt.axis('off')        \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(dataset, epochs):\n",
    "    for epoch in range(epochs):\n",
    "        for image_batch, label_batch in dataset:\n",
    "            train_step(image_batch, label_batch)\n",
    "        if epoch % 10 == 0:\n",
    "            print('.', end='')\n",
    "            generate_plot_image(generator, noise_seed, cat_seed, epoch)\n",
    "    generate_plot_image(generator, noise_seed, cat_seed, epoch)       "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "EPOCHS = 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".Epoch: 0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x72 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x72 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train(datasets, EPOCHS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
